#ifndef __GUI_SPELBORD_H__
#define __GUI_SPELBORD_H__

// AUTHOR: Kenneth Venken

// kan: bord weergeven met daarop te posities van de robots
// robots verplaatsen
// lasers schieten
// robots in putten laten vallen.
#include <QWidget>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QPointF>
#include "Map.h"

#include <vector>
using std::vector;

#include "Tile.h"

class Robot;
class Spel;
class GUIRobot;
#include <map>
using std::map;

class GUISpelbord : public QWidget
{
public:
	// map hoeft maar 1 keer meegegeven te worden. das toch statisch
	GUISpelbord(const Map& map, int gridSize = 30, QWidget* parent = NULL);
	~GUISpelbord();

public slots:
	// update de posities van de robots
	void update(Spel* spel);

private:
	map<Robot*, GUIRobot*> m_robots;

	QGraphicsScene* m_scene;
	QGraphicsView* m_view;

	int m_gridSize;
	int m_width;
	int m_height;

	QPointF toWorldCoords(int x, int y) { return QPointF(x * m_gridSize - m_gridSize/2, y * m_gridSize - m_gridSize/2); }
	vector<Tile*> m_tiles; // to clean up afterwards
};

#endif
